소프트웨어 공학
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
소프트웨어 공학은 소프트웨어의 개발, 운영 및 유지보수에 체계적이고 학문적인 방법을 적용하는 분야이다. 1940년대 컴퓨터가 등장한 이후 소프트웨어의 복잡성을 다루기 위한 추상화와 프로그래밍 언어의 발전이 이루어졌다. 1960년대부터 공학의 한 분야로 인식되기 시작했으며, 1968년 NATO 소프트웨어 공학 컨퍼런스에서 소프트웨어 위기라는 용어가 처음 등장하며 개발의 어려움이 부각되었다. 주요 개념으로는 소프트웨어 개발 생명 주기, 요구사항 분석, 소프트웨어 설계, 구현, 테스팅, 유지보수 등이 있으며, 애자일 소프트웨어 개발, DevOps, 모델 주도 공학 등이 주요 방법론으로 연구되고 있다. 소프트웨어 공학은 윤리적, 사회적 책임을 가지며, 관련 교육 및 자격증 제도가 운영되고 있다. 최근에는 인공지능, 빅데이터 등 신기술과의 융합을 통해 지속적으로 발전하고 있다.
더 읽어볼만한 페이지
- 소프트웨어 개발 - 컴퓨터 과학
컴퓨터 과학은 컴퓨터와 관련된 현상을 연구하는 학문으로, 계산 이론, 하드웨어 및 소프트웨어 설계, 문제 해결 등을 포괄하며, 수학, 공학 등 여러 분야와 융합하여 발전해 왔다. - 소프트웨어 개발 - 스파이웨어
스파이웨어는 사용자의 동의 없이 설치되어 개인 정보를 수집하거나 시스템을 감시하며, 다양한 형태로 존재하여 광고 표시, 정보 탈취, 시스템 성능 저하 등의 피해를 유발하는 악성 프로그램이다. - 소프트웨어 공학 - 통합 개발 환경
통합 개발 환경(IDE)은 코드 편집, 빌드, 디버깅 등 소프트웨어 개발에 필요한 여러 기능을 통합적으로 제공하는 응용 프로그램이다. - 소프트웨어 공학 - 소프트웨어 개발
소프트웨어 개발은 요구사항 분석, 설계, 코딩, 테스트, 배포, 유지보수를 포함하는 컴퓨터 프로그램 및 관련 데이터를 만드는 과정으로, 다양한 방법론과 도구가 사용되며, 개발자 외에도 다양한 전문가들이 참여한다. - 컴퓨터에 관한 - 고속 패킷 접속
고속 패킷 접속(HSPA)은 3세대 이동통신(3G)의 데이터 전송 속도를 높이는 기술 집합체로, 고속 하향/상향 패킷 접속(HSDPA/HSUPA)을 통해 속도를 개선하고 다중 안테나, 고차 변조, 다중 주파수 대역 활용 등의 기술로 진화했으나, LTE 및 5G 기술 발전으로 현재는 상용 서비스가 중단되었다. - 컴퓨터에 관한 - 데이터베이스
데이터베이스는 여러 사용자가 공유하고 사용하는 정보의 집합으로, 데이터베이스 관리 시스템을 통해 접근하며, 검색 및 갱신 효율을 높이기 위해 고도로 구조화되어 있고, 관계형, NoSQL, NewSQL 등 다양한 모델로 발전해왔다.
소프트웨어 공학 | |
---|---|
핵심 활동 | |
소프트웨어 | 소프트웨어 |
소프트웨어 개발 | 소프트웨어 개발 |
요구 분석 | 요구 분석 |
소프트웨어 아키텍처 | 소프트웨어 아키텍처 |
소프트웨어 설계 | 소프트웨어 설계 |
소프트웨어 공학 | 소프트웨어 공학 |
프로그래밍 | 프로그래밍 |
소프트웨어 테스트 | 소프트웨어 테스트 |
디버깅 | 디버깅 |
소프트웨어 배포 | 소프트웨어 배포 |
소프트웨어 유지보수 | 소프트웨어 유지보수 |
패러다임 및 모델 | |
애자일 소프트웨어 개발 | 애자일 소프트웨어 개발 |
소프트웨어 클린룸 | 소프트웨어 클린룸 |
반복형 개발 | 반복형 개발 |
소프트웨어 프로토타이핑 | 소프트웨어 프로토타이핑 |
스파이럴 모델 | 스파이럴 모델 |
V 모델 | V 모델 |
워터폴 모델 | 워터폴 모델 |
소프트웨어 개발 방법론 및 프레임워크 | |
적응형 소프트웨어 개발 | 적응형 소프트웨어 개발 |
DevOps | DevOps |
규율적 애자일 전달 | 규율적 애자일 전달 |
동적 시스템 개발 방법 | 동적 시스템 개발 방법 |
사용자 기능 중심 개발 | 사용자 기능 중심 개발 |
반복형 개발 | 반복형 개발 |
칸반 | 칸반 |
린 소프트웨어 개발 | 린 소프트웨어 개발 |
LeSS | LeSS |
모델 기반 공학 | 모델 기반 공학 |
Microsoft Solutions Framework | Microsoft Solutions Framework |
개인 소프트웨어 프로세스 | 개인 소프트웨어 프로세스 |
래피드 애플리케이션 개발 | 래피드 애플리케이션 개발 |
래셔널 통합 프로세스 | 래셔널 통합 프로세스 |
Scaled Agile Framework | Scaled Agile Framework |
스크럼 | 스크럼 |
SEMAT | SEMAT |
팀 소프트웨어 프로세스 | 팀 소프트웨어 프로세스 |
OpenUP | OpenUP |
통합 프로세스 | 통합 프로세스 |
익스트림 프로그래밍 | 익스트림 프로그래밍 |
개발 지원 | |
소프트웨어 구성 관리 | 소프트웨어 구성 관리 |
소프트웨어 문서화 | 소프트웨어 문서화 |
소프트웨어 품질 보증 | 소프트웨어 품질 보증 |
소프트웨어 프로젝트 관리 | 소프트웨어 프로젝트 관리 |
사용자 경험 | 사용자 경험 |
실천 | |
인수 테스트 기반 개발 | 인수 테스트 기반 개발 |
행위 주도 개발 | 행위 주도 개발 |
집단 코드 소유권 | 집단 코드 소유권 |
지속적 통합 | 지속적 통합 |
지속적 전달 | 지속적 전달 |
도메인 주도 설계 | 도메인 주도 설계 |
페어 프로그래밍 | 페어 프로그래밍 |
예시를 통한 명세 | 예시를 통한 명세 |
스탠드업 미팅 | 스탠드업 미팅 |
테스트 주도 개발 | 테스트 주도 개발 |
프로그래밍 도구 | |
컴파일러 | 컴파일러 |
디버거 | 디버거 |
링커 | 링커 |
성능 분석 | 성능 분석 |
GUI 빌더 | GUI 빌더 |
UML 도구 | UML 도구 |
통합 개발 환경 | 통합 개발 환경 |
빌드 자동화 | 빌드 자동화 |
애플리케이션 릴리스 자동화 | 애플리케이션 릴리스 자동화 |
코드형 인프라 | 코드형 인프라 |
소프트웨어 테스트 도구 | :분류:소프트웨어 테스트 도구 |
표준 및 기관 | |
BABOK | BABOK |
CMMI | CMMI |
IEEE 표준 협회 | IEEE 표준 협회 |
ISO 9001 | ISO 9001 |
ISO/IEC JTC 1/SC 7 | ISO/IEC JTC 1/SC 7 |
PMBOK | PMBOK |
SWEBOK | SWEBOK |
ITIL | ITIL |
용어집 | |
인공지능 용어집 | 인공지능 용어집 |
컴퓨터 과학 용어집 | 컴퓨터 과학 용어집 |
2. 역사
소프트웨어 공학의 발전은 컴퓨터 하드웨어 및 프로그래밍 언어의 발전과 밀접하게 연관되어 있다.
1960년대부터 소프트웨어 공학은 공학의 별개 분야로 인식되기 시작했다.[7] "소프트웨어 공학"이라는 용어는 1965년 "컴퓨터 및 자동화" 잡지에 처음 등장했으며,[8] 1966년 ''ACM 커뮤니케이션스''에서 보다 공식적으로 사용되었다.[9][10] 1968년 F. L. 바우어 교수가 주최한 NATO 컨퍼런스의 제목과도 관련이 있다.[11] 마가렛 해밀턴은 아폴로 계획 당시 "소프트웨어 공학"이라는 분야를 설명했다.[12]
1984년, 소프트웨어 공학 연구소(SEI)가 카네기 멜론 대학교에 설립되었다.[18] 왓츠 험프리는 소프트웨어 공학 프로세스를 이해하고 관리하는 것을 목표로 하는 SEI 소프트웨어 프로세스 프로그램을 설립했다.[18] 도입된 프로세스 성숙도 수준은 능력 성숙도 모델 통합(CMMI-DEV)이 되었으며, 이는 미국 정부가 소프트웨어 개발팀의 능력을 평가하는 방법을 정의했다.
소프트웨어 공학의 현대적이고 일반적으로 받아들여지는 모범 사례는 소프트웨어 공학 지식체계(SWEBOK)로 발표되었다.[6]
1949년 EDSAC에서는 이미 로더가 초기 어셈블러의 기능을 갖추고 있었던 것으로 알려져 있다.[106] 1950년대 전후에는 EDSAC나 EDVAC과 같은 초기 컴퓨터의 프로그래밍에 대한 문헌이 발표되면서 초기 프로그래밍 기법이 알려지게 되었다. 언어 측면에서는 직접 이진수로 기계어를 작성하는 번거로움을 피하기 위해 어셈블리어가 곧 등장했다. 1950년대 중반에는 오토코드, 포트란, 리스프 등 초기 고급 언어가 나타났다.
2. 1. 초기 (1940년대 ~ 1960년대)
1941년 현대 디지털 컴퓨터가 처음 등장했을 때, 연산 명령은 배선으로 주어졌다. 실무진들은 곧 이러한 설계 방식이 유연하지 않다는 것을 깨달았고, "프로그램 내장 방식"인 폰 노이만 구조를 개발하였다. 이는 "하드웨어"와 "소프트웨어" 사이의 최초 구분을 가져왔고, 전산의 복잡성을 다루기 위해 추상화가 동반되었다.프로그래밍 언어는 1950년대에 나타나기 시작했으며, 이는 추상화를 향한 또 하나의 큰 발걸음이었다. 포트란, 알골, 코볼 등 주요 언어들이 1950년대 말 배포되어 과학, 알고리즘, 경영상의 문제를 각각 다루었다. 에츠허르 데이크스트라는 1968년 "Go to 문은 해로운 것으로 생각된다"라는 중요한 논문을 발표했고,[110] 데이빗 파르나스는 1972년 모듈성과 정보 은폐라는 핵심 개념을 소개하여[111] 프로그래머들이 계속 증가하는 소프트웨어 시스템의 복잡성을 다루는 데 도움을 주었다.
2. 2. 소프트웨어 위기 (1960년대 후반 ~ 1970년대)
1968년 NATO 소프트웨어 공학 회의에서 "소프트웨어 위기"라는 용어가 처음 등장하면서, 소프트웨어 개발의 복잡성 증가와 관리 어려움에 대한 문제 인식이 확산되었다.[13][14][15] 당시 소프트웨어 개발은 예산 초과, 기한 미준수, 광범위한 디버깅 및 유지보수 필요, 소비자 요구 불만족, 심지어 프로젝트 미완료 등의 문제에 직면했다.[7]같은 해, 에츠허르 데이크스트라는 "Go to 문은 해로운 것으로 생각된다"라는 중요한 논문을 발표했다.[110] 1972년에는 데이빗 파르나스가 모듈성과 정보 은폐라는 핵심 개념을 소개하여, 프로그래머들이 점차 증가하는 소프트웨어 시스템의 복잡성을 다루는 데 도움을 주었다.[111]
2. 3. 발전기 (1970년대 ~ 1980년대)
1969년에 유닉스 운영체제가 등장하였다.[111] 1967년에는 시뮬라 언어가 객체 지향 프로그래밍 패러다임을 소개하였다.[111]1970년대 중반 마이크로컴퓨터가 소개되어 취미로 컴퓨터를 구하고 그 소프트웨어를 작성하는 것이 경제적으로 가능해졌다. 이는 개인용 컴퓨터와 마이크로소프트 윈도우로 이어졌다.[112] 소프트웨어 개발 프로세스(SDLC) 또한 나타나기 시작하여 1980년대 중반에는 중앙 집중화된 소프트웨어 개발을 위한 일치된 합의로서 자리매김하였다.[112] 1970년대 말과 1980년대 초 시뮬라에서 영감을 받은 C++, 스몰토크, 오브젝티브-C와 같은 새로운 객체 지향 프로그래밍 언어들이 등장했다.[112]
2. 4. 성숙기 (1990년대 ~ 현재)
오픈 소스 소프트웨어는 1990년대 초 나타나기 시작하여 리눅스와 "바자(bazaar)" 또는 분산형 소프트웨어 개발 방식을 소개하였다.[112] 인터넷과 월드와이드웹은 1990년대 중반 소프트웨어 공학에 큰 영향을 미쳤다. 시스템 설계 방식은 분산 시스템으로 전환되었고, 자바 프로그래밍 언어는 가상 머신을 통해 추상화를 발전시켰다. 애자일(Agile) 선언문은 더 빠르고 유연한 개발 프로세스를 지향하였다.현재의 소프트웨어 공학 정의는 오늘날의 실무자들이 더 저렴하고, 더 크고, 더 빠르게 소프트웨어를 개발하고자 노력함에 따라 아직도 논쟁 중에 있다.
3. 한국 소프트웨어 공학의 역사
(이전 출력이 없으므로, 수정할 내용이 없습니다. 원본 소스를 제공해주시면 위키텍스트를 생성하고, 그 결과를 다시 제공해주시면 수정해드리겠습니다.)
4. 주요 개념 및 방법론
소프트웨어 공학은 소프트웨어의 개발, 운영, 유지보수를 체계적이고 정량적으로 다루는 학문 분야이다.[84] 이는 '공학'적인 접근 방식을 통해 소프트웨어의 신뢰성, 유지보수성, 개발 효율성을 높이는 것을 목표로 한다.[85]
소프트웨어 공학은 크게 설계와 생산 두 가지 영역으로 나뉜다. 설계는 소프트웨어 아키텍처를 다루며, 생산은 소프트웨어 생명 주기 프로세스를 다룬다. 이 두 영역은 상호 연관되어 있으며, 각각 장점과 제약점을 가진다.
소프트웨어 공학은 요구사항 분석, 소프트웨어 설계, 프로그래밍, 소프트웨어 테스팅, 소프트웨어 유지보수 등의 작업을 포함한다.[86] 또한, 컴퓨터 과학, 컴퓨터 공학, 경영 관리론, 수학, 프로젝트 관리(소프트웨어 프로젝트 관리), 품질 관리, 인간 공학, 시스템 공학 등 다양한 학문 분야와 관련되어 있다.[87] 데이터베이스 설계와 같이 다른 분야에서 독립하거나, 객체 지향 기술처럼 다른 분야의 개념을 도입하기도 한다.
''software engineering''이라는 용어는 Brian Randell가 고안했고, 1968년 NATO Software Engineering 컨퍼런스에서 F. L. Bauer가 사용하면서 널리 알려지게 되었다.[88] 소프트웨어 위기라는 용어도 이 컨퍼런스에서 처음 등장한 것으로 알려져 있다.
소프트웨어 공학은 컴퓨터와 함께 발전해 왔으며, 관련 도구와 응용 프로그램도 지속적으로 진화해 왔다. 1949년 EDSAC에서는 이미 로더가 초기 어셈블러의 기능을 갖추고 있었고,[106] 1950년대에는 어셈블리어와 포트란(FORTRAN), 리스프(LISP)와 같은 초기 고급 언어들이 등장했다. 1970년대에는 유닉스(UNIX), 코드 저장소, make 등의 협업 도구가 등장했으며, 1980년대에는 개인용 컴퓨터와 상용 소프트웨어가 확산되고 객체 지향 프로그래밍이 주목받기 시작했다. 1990년대에는 객체 지향 프로그래밍, 애자일 소프트웨어 개발, 익스트림 프로그래밍이 주류가 되었고, 2000년대에는 자바(Java), 루비(Ruby), 파이썬(Python), PHP와 같은 인터프리터 기반 언어와 .NET Framework의 관리 코드 등이 널리 사용되기 시작했다.
4. 1. 소프트웨어 개발 생명 주기 (SDLC)
소프트웨어는 구상부터 폐기까지 점진적으로 발전하는 '''소프트웨어 생명 주기'''(life cycle영어)를 가진다.[89] 이러한 소프트웨어 생명 주기를 프로세스로 인식할 때의 유형을 '''생명 주기 모델'''(life cycle model영어)이라고 한다.[90]개발 프로세스 모델에는 요구 분석부터 테스트까지 순차적으로 진행하는 폭포수 모델, 개발 기간을 짧게 나누어 각 개발 공정을 반복하는 나선형 모델 등이 있다. 소프트웨어 생명 주기를 정의하는 표준으로는 ISO 12207이 있다.
개발 프로세스를 개선하기 위한 방법론 및 연구를 소프트웨어 개발 방법론이라고 한다. 프로세스에 주목한 방법론으로는 폭포수 모델을 따르는 폭포수 개발, 나선형 모델을 따르는 반복형 개발, 애자일 소프트웨어 개발 등이 있다. 애자일 소프트웨어 개발에서는 테스트 주도 개발과 같이 순서나 각 단계의 의미를 변경하기도 한다. 개발 프로세스와 운영 프로세스의 통합을 목표로 하는 DevOps도 있다.
4. 2. 요구사항 분석
요구사항 공학은 소프트웨어에 대한 요구사항을 도출, 분석, 명세 및 검증하는 것이다.[35] 이는 소프트웨어 개발의 첫 단계로, 사용자의 요구사항을 정확하게 파악하고 분석하는 과정을 의미한다.소프트웨어 요구사항은 크게 기능적, 비기능적, 도메인 요구사항으로 분류할 수 있다.[35]
- 기능 요구사항: 예상되는 동작, 즉 출력을 설명한다.
- 비기능 요구사항: 이식성, 보안, 유지보수성, 신뢰성, 확장성, 성능, 재사용성, 유연성 등의 문제를 다룬다. 시스템 또는 소프트웨어가 작동하는 방식에 대한 지식이 필요하며, 인터페이스, 성능(응답 시간, 보안, 저장 공간 등), 운영, 수명 주기(유지보수성, 이식성 등), 경제적 제약과 같은 유형으로 분류된다.
- 도메인 요구사항: 특정 범주 또는 프로젝트 도메인의 특성과 관련이 있다.[35]
4. 3. 소프트웨어 설계
소프트웨어 설계는 소프트웨어에 대한 상위 수준 계획을 세우는 과정이다. 설계는 다음과 같은 수준으로 나뉜다.- 인터페이스 설계: 시스템과 그 환경 간의 상호 작용뿐만 아니라 시스템의 내부 작동 방식을 계획한다.
- 아키텍처 설계: 시스템의 주요 구성 요소와 그들의 책임, 속성, 그리고 구성 요소 간의 인터페이스를 계획한다.
- 상세 설계: 속성, 관계, 알고리즘 및 자료 구조를 포함한 내부 요소를 계획한다.[36]
사람이 여러 장기로 구성되는 것처럼, 소프트웨어도 여러 구성 요소로 이루어진 구조를 갖는다. 이러한 구조를 소프트웨어 아키텍처라고 한다. 디자인 패턴/안티 패턴은 아키텍처보다 더 세부적인 구조이다. 또한 프로그래밍의 지침을 프로그래밍 패러다임이라고 한다. 패러다임은 결과적으로 구조에 영향을 미친다. 예를 들어 구조적 프로그래밍, 객체 지향 프로그래밍이 있다.
소프트웨어 시스템을 더욱 발전시키는 다양한 방법론(methodology)이 소프트웨어 공학에서 연구되고 있다. 라이프 사이클별 방법론이나 아키텍처 구현 관련 방법론 등이 있다. 특정 설계를 채택하고 그것이 개발 프로세스와 강하게 연결되는 방법론도 존재한다. 객체지향 개발 방법론, 도메인 주도 설계가 그 예이다.
소프트웨어가 더 나은 구조를 갖도록 하는 다양한 방법론이 연구되고 있으며, 표준으로는 UML이 있다.
4. 4. 소프트웨어 구현 (코딩)
소프트웨어 구축은 컴퓨터 프로그래밍(코딩)과 단위 테스트, 통합 테스트, 디버깅을 포함하며, 이는 일반적으로 설계를 구현하기 위해 사용된다.[1] [6] 이 단계에서 프로그래머는 코드가 설계대로 동작하는지, 그리고 다음 단계의 테스트를 수행할 준비가 되었는지 확인하기 위해 테스트를 수행한다.4. 5. 소프트웨어 테스팅
소프트웨어 테스팅은 테스트 대상 소프트웨어의 품질에 대한 정보를 이해관계자에게 제공하기 위해 수행되는 경험적이고 기술적인 조사이다.[1][6] 개발과 별도로 설명할 때, 테스팅은 일반적으로 해당 소프트웨어를 작성한 프로그래머가 아닌 테스트 엔지니어 또는 품질 보증 담당자가 수행한다. 시스템 수준에서 수행되며 소프트웨어 품질의 한 측면으로 간주된다.
4. 6. 소프트웨어 유지보수
소프트웨어 유지보수는 소프트웨어 출시 후 지원하는 것을 말한다. 여기에는 오류 수정, 최적화, 사용하지 않는 기능 및 폐기된 기능 삭제, 기존 기능 개선 등이 포함될 수 있지만 이에 국한되지는 않는다.[1][6]일반적으로 유지보수는 프로젝트 비용의 40%에서 80%를 차지한다.[37]
4. 7. 소프트웨어 형상 관리
소프트웨어 시스템은 매우 복잡하므로, 그 형상(버전과 소스 제어)을 표준화하고 구조적인 방법으로 관리해야 한다.[107]4. 8. 소프트웨어 프로젝트 관리
소프트웨어 공학 관리는 프로젝트 관리와 매우 밀접하지만, 다른 관리 분야와는 다른 소프트웨어 고유의 특징이 있다.[107]5. 세부 분야
소프트웨어 공학은 다음 10가지 분야로 나뉜다.[107]
- 소프트웨어 요구사항: 소프트웨어 요구 사항을 추출, 분석, 명세, 검증한다. 소프트웨어 요구공학(Software Requirements Engineering) 분야가 독립적으로 존재한다.
- 소프트웨어 설계: 보통 전산 지원 소프트웨어 공학(CASE) 도구를 이용하며, UML과 같은 표준 형식을 사용한다.
- 소프트웨어 개발: 프로그래밍 언어를 사용하여 소프트웨어를 구축한다.
- 소프트웨어 시험
- 소프트웨어 유지 보수: 소프트웨어 시스템은 초기 완성 후 오랜 시간이 지나면 문제를 일으킬 수 있어 개선이 필요하다.
- 소프트웨어 형상 관리: 소프트웨어 시스템은 매우 복잡하므로 형상(버전과 소스 제어)을 표준화하고 구조적인 방법으로 관리해야 한다.
- 소프트웨어 공학 관리: 프로젝트 관리와 매우 밀접하지만, 소프트웨어 고유의 미묘한 차이가 있다.
- 소프트웨어 개발 프로세스: 소프트웨어를 구축하는 과정에 대해 실무자들 사이에서 논쟁이 있으며, 주요 패러다임은 애자일 프로세스와 폭포수 프로세스이다.
- 소프트웨어 공학 도구, CASE 참조.
- 소프트웨어 품질
6. 교육 및 자격증
프로그래밍에 관한 지식은 소프트웨어 공학자가 되기 위한 중요한 요건이지만, 이것만으로는 충분하지 않다. 많은 소프트웨어 공학자들이 컴퓨터 과학 학위를 가지고 있지만, 소프트웨어 공학 프로그램이 고등 교육에서 부족했기 때문에 진정한 소프트웨어 공학자가 부족하다는 지적도 있다.[113] 그러나 최근에는 학부 이후 학위로 소프트웨어 공학 학위가 소개되고 있다.
소프트웨어 엔지니어가 되기 위해서는 대학교 학위를 취득하거나 직업 학교에서 교육을 받는 경우가 많다. 또한, 기업들은 정보 기술 분야의 경력을 쌓고자 하는 학생들을 위해 인턴십을 제공하기도 하며, 군 복무를 통해서도 유사한 경험을 얻을 수 있다.
소프트웨어 엔지니어링 지식의 확산과 분야의 성숙을 위해 라이선스, 인증 및 체계화된 지식 기반을 요구하는 목소리도 있다.[81]
하지만, 소프트웨어 엔지니어링이라는 개념이 너무 새롭기 때문에 제대로 이해되지 못하고 있으며, 교과서, 논문, 프로그래머 및 개발자 커뮤니티를 포함하여 널리 오해되고 있다는 주장도 있다.[82]
또한, 소프트웨어 엔지니어링의 핵심 문제는 접근 방식이 경험적이지 않다는 것이다. 실제 세계에서 접근 방식의 검증이 매우 제한적이기 때문에 "이론적 환경"에서만 가능한 것으로 오해된다는 주장도 있다.[82]
에츠허르 데이크스트라는 "소프트웨어 엔지니어링"이라는 개념을 거부하고, 그 용어들이 컴퓨터 과학에 대한 부적절한 비유라고 주장했다.
6. 1. 한국
국내 대학에는 컴퓨터공학과, 소프트웨어학과 등 소프트웨어 공학 관련 학과가 있으며, 관련 교육 과정을 제공하고 있다. 또한, 정보처리기사, 정보시스템감리사 등 소프트웨어 관련 자격증 제도도 운영되고 있다.SW 마에스트로, 삼성 청년 SW 아카데미(SSAFY) 등 정부 및 기업 주도의 소프트웨어 인력 양성 프로그램도 운영되고 있다.
6. 2. 해외
프로그래밍 지식은 소프트웨어 공학자가 되기 위한 중요한 선수 요건이지만, 그것만으로는 충분하지 않다. 많은 소프트웨어 공학자들이 컴퓨터 과학 학위를 가지고 있지만, 진정한 소프트웨어 공학자가 부족하다는 지적도 있다.[113] 이는 소프트웨어 공학 프로그램이 고등 교육에 부족했기 때문이다. 그러나 최근에는 학부 이후 학위로 소프트웨어 공학 학위가 소개되고 있다. 학부 소프트웨어 엔지니어링 학위를 위한 표준 국제 교육과정은 IEEE 컴퓨터 학회와 컴퓨팅 기계학회의 컴퓨팅 교육과정 합동 태스크포스에 의해 정의되었고, 2014년에 업데이트되었다.[19] 표준 국제 학부 교육과정은 CCSE에서 정의하고 있다.2004년 IEEE 컴퓨터 학회는 SWEBOK을 발표했고, 이는 소프트웨어 공학자가 알아야 할 지식 범위를 정의하는 표준 ISO/IEC 24773으로 채택되었다.[114]
유럽 위원회는 에라스무스 문두스 프로그램의 일환으로 소프트웨어 공학 유럽 석사 학위를 유럽 내외 학생들에게 제공하고 있다.[115] 이는 복수 전공 프로그램으로, 유럽 내 4개 학교가 관련되어 있다.
많은 소프트웨어 엔지니어들은 대학교 학위를 취득하거나 직업 학교에서 교육을 받아 이 직업에 진출한다.
1987년, 임페리얼 컬리지 런던 컴퓨팅학과는 세계 최초의 3년제 소프트웨어 공학 학사 학위 과정을 도입했다. 이듬해에는 셰필드 대학교에서도 유사한 프로그램을 설립했다.[39] 1996년, 로체스터 공과대학교는 미국 최초의 소프트웨어 공학 학사 학위 프로그램을 설립했지만, ABET 인증을 받은 것은 2003년이었다. 같은 해에 라이스 대학교, 클락슨 대학교, 밀워키 공과대학교, 미시시피 주립 대학교도 인증을 받았다.[40] 1997년, 인도 코임바토르의 PSG 공과대학은 소프트웨어 공학 석사 5년제 통합 과정을 처음으로 시작했다.
최초의 소프트웨어 공학 석사 학위는 1979년 시애틀 대학교에서 설립되었다. 1998년, 미국 해군 대학원은 세계 최초의 소프트웨어 공학 박사 학위 프로그램을 설립했다.
7. 윤리 및 사회적 책임
소프트웨어 개발자와 엔지니어는 윤리적 책임과 사회적 영향에 대한 깊은 이해가 필요하다.
IEEE 컴퓨터 학회와 컴퓨팅 기계 협회(ACM)는 미국의 주요 소프트웨어 엔지니어링 전문 기관으로, 소프트웨어 엔지니어링 직업에 대한 안내서를 발행한다. IEEE의 SWEBOK은 해당 분야를 정의하고 실무 소프트웨어 엔지니어가 갖추어야 할 지식을 설명하며, 최신 버전은 SWEBOK v4이다.[6] IEEE는 또한 "소프트웨어 엔지니어링 윤리 강령"을 공표한다.[45]
전문 소프트웨어 엔지니어의 면허나 자격증에 대한 법률적 요구 사항은 전 세계적으로 다르다. 영국에는 소프트웨어 엔지니어라는 직함을 사용하는 것에 대한 면허나 법적 요구 사항이 없다. 캐나다의 앨버타, 브리티시컬럼비아, 온타리오[42] 및 퀘벡과 같은 일부 지역에서는 소프트웨어 엔지니어가 전문 엔지니어(P.Eng) 자격증 및/또는 정보 시스템 전문가(I.S.P.) 자격증을 취득할 수 있다. 유럽에서는 소프트웨어 엔지니어가 유럽 엔지니어(EUR ING) 전문 자격을 취득할 수 있으며, 공인 엔지니어는 영국 컴퓨터 학회(British Computer Society)를 통해 전문 자격을 갖출 수 있다. 미국에서는 NCEES가 2013년에 소프트웨어 엔지니어링을 위한 전문 엔지니어 시험을 제공하기 시작했으나, 참여 부족으로 2019년 4월 이후 시험이 중단되었다.[43][44]
초기 아웃소싱의 영향과 개발도상국의 저렴한 국제 인적 자원은 북미와 유럽 기업의 소프트웨어 개발 활동을 인도, 중국, 러시아 및 기타 개발도상국으로 대규모 이전하게 만들었다. 이러한 접근 방식에는 고객과 개발자 간의 상호 작용을 방해하는 거리/시간대 차이와 대규모 일자리 이전이라는 주요 결함이 있었고, 이는 소프트웨어 공학 분야에 부정적인 영향을 미쳤다. 그럼에도 불구하고, 릴레이 개발 방식 워크플로를 통해 해외 및 근해 자원을 효율적으로 활용하는 능력은 많은 조직의 전반적인 운영 능력을 향상시켰다.[76]
7. 1. 윤리적 고려 사항
전 세계적으로 전문 소프트웨어 엔지니어의 면허나 자격증에 대한 법률적 요구 사항은 서로 다르다. 영국에서는 소프트웨어 엔지니어라는 직함을 사용하는 데 면허나 법적 요구 사항이 없다. 캐나다에서는 앨버타, 브리티시컬럼비아, 온타리오[42], 퀘벡과 같은 일부 주에서 소프트웨어 엔지니어가 전문 엔지니어(P.Eng) 자격증이나 정보 시스템 전문가(I.S.P.) 자격증을 취득할 수 있다. 유럽에서는 소프트웨어 엔지니어가 유럽 엔지니어(EUR ING) 전문 자격을 취득할 수 있으며, 공인 엔지니어는 영국 컴퓨터 학회(British Computer Society)를 통해 전문 자격을 갖출 수 있다.미국에서는 NCEES가 2013년부터 소프트웨어 엔지니어링 전문 엔지니어 시험을 제공하여 소프트웨어 엔지니어가 면허를 받고 인정받을 수 있게 되었다.[43] 그러나 참여 부족으로 2019년 4월 이후 시험이 중단되었다.[44] 현재 의무 면허는 여전히 논쟁의 여지가 많은 상황이다.[70][71]
IEEE 컴퓨터 학회와 컴퓨팅 기계 협회(ACM)는 미국의 주요 소프트웨어 엔지니어링 전문 기관으로, 소프트웨어 엔지니어링 직업에 대한 안내서를 발행한다. IEEE의 SWEBOK은 해당 분야를 정의하고 실무 소프트웨어 엔지니어가 갖추어야 할 지식을 설명하며, 최신 버전은 SWEBOK v4이다.[6] IEEE는 "소프트웨어 엔지니어링 윤리 강령"도 공표한다.[45]
7. 2. 사회적 영향
해외 아웃소싱(다른 국가에서 소프트웨어 제품이나 서비스를 수입하는 것)과 외국인 노동자에 의한 일자리 대체에 대한 우려 때문에 선진국의 일부 학생들은 소프트웨어 공학 관련 교육을 기피하는 현상이 발생했다.[74] 통계적으로는 소프트웨어 공학 자체는 위협받지 않지만, 관련 직종인 컴퓨터 프로그래밍은 영향을 받은 것으로 나타났다.[75]초기 아웃소싱의 영향으로 개발도상국의 저렴한 국제 인적 자원이 활용되면서, 북미와 유럽 기업의 소프트웨어 개발 활동은 인도, 중국, 러시아 및 기타 개발도상국으로 대규모 이전되었다. 이러한 방식은 고객과 개발자 간의 상호 작용을 방해하는 거리 및 시간대 차이, 대규모 일자리 이전이라는 문제점을 가지고 있었다.
그러나 릴레이 개발 방식 워크플로를 통해 해외 및 근해 자원을 효율적으로 활용하는 것은 많은 조직의 운영 능력을 향상시켰다.[76] 예를 들어, 북미 직원들이 퇴근할 때 아시아 직원들이 출근하고, 아시아 직원들이 퇴근할 때 유럽 직원들이 출근하는 방식으로 24시간 비즈니스 프로세스를 지속적으로 감독할 수 있게 되었다.
글로벌 아웃소싱은 여러 장점을 가지지만, 지리적, 시간적, 문화적, 의사소통(다양한 지역에서 영어의 서로 다른 언어와 방언 사용 포함)의 어려움에 직면할 수 있다.[77] 지난 15년 동안 글로벌 소프트웨어 개발 분야의 연구가 진행되면서 이와 관련된 이점과 문제점이 밝혀졌으며, 소프트웨어 공학의 다른 측면과 마찬가지로 이 분야 및 관련 분야에 대한 연구는 계속되고 있다.
8. 논쟁 및 비판
소프트웨어 공학 분야는 여러 논쟁과 비판에 직면해 있다.
소프트웨어 공학 지식의 확산과 분야 성숙을 위해 라이선스, 인증, 체계화된 지식 기반을 요구하는 목소리가 있다.[81] 그러나 소프트웨어 공학이라는 개념 자체가 너무 새롭기 때문에 제대로 이해되지 못하고 널리 오해되고 있다는 주장도 제기된다.[82]
소프트웨어 공학의 핵심 문제는 그 접근 방식이 경험적이지 않다는 비판이다. 즉, 실제 세계에서 검증이 부족하거나 매우 제한적이기 때문에, "이론적 환경"에서만 가능한 것으로 오해된다는 것이다.[82]
초기 아웃소싱의 영향으로 북미와 유럽의 소프트웨어 개발 활동이 인도, 중국, 러시아 등 개발도상국으로 이전되었다. 이러한 방식은 거리와 시간대 차이, 대규모 일자리 이전 등의 문제점을 야기했다. 이로 인해 선진국 학생들은 해외 아웃소싱과 외국인 노동자에 의한 일자리 대체 우려로 소프트웨어 공학 교육을 기피하기도 한다.[74] 관련 통계에 따르면, 소프트웨어 공학 자체는 아니지만 컴퓨터 프로그래밍 직종은 영향을 받은 것으로 나타났다.[75]
8. 1. 공학으로서의 정체성 논쟁
마가렛 해밀턴은 아폴로 계획 작업 중 "소프트웨어 공학"이라는 용어를 제창했다. "공학"이라는 용어는 소프트웨어 작업이 기술 발전에 대한 다른 기여만큼 중요하게 여겨져야 함을 인정하기 위해 사용되었다.[29] 해밀턴은 자신이 이 용어를 사용한 이유에 대해 다음과 같이 설명한다.> 처음으로 그 용어를 생각해 냈을 때, 적어도 우리 분야에서는 아무도 들어본 적이 없었습니다. 오랫동안 계속되는 농담거리였죠. 그들은 제 급진적인 아이디어를 가지고 놀리곤 했습니다. 가장 존경받는 하드웨어 전문가 중 한 명이 회의에서 소프트웨어 제작 과정도 하드웨어처럼 공학 분야로 간주되어야 한다는 데 동의한다고 모두에게 설명했을 때 기억에 남는 날이었습니다. 새로운 "용어" 자체에 대한 그의 수용 때문이 아니라, 우리가 그와 회의실에 있던 다른 사람들의 수용을 얻어 독자적인 공학 분야에 속하게 되었기 때문입니다.[29]
소프트웨어 엔지니어링 지식의 확산과 분야의 성숙을 위한 메커니즘으로 라이선스, 인증 및 체계화된 지식 기반을 요구하는 목소리가 있다.[81]
소프트웨어 엔지니어링이라는 개념이 너무나 새롭기 때문에 거의 이해되지 않고 있으며, 소프트웨어 엔지니어링 교과서, 논문, 프로그래머 및 개발자 커뮤니티를 포함하여 널리 오해되고 있다는 주장도 있다.[82]
소프트웨어 엔지니어링의 핵심 문제는 접근 방식이 경험적이지 않다는 것이다. 실제 세계에서 접근 방식의 검증이 일반적으로 없거나 매우 제한적이기 때문에 소프트웨어 엔지니어링은 종종 "이론적 환경"에서만 가능한 것으로 오해된다는 주장이 있다.[82]
오늘날 소프트웨어 개발의 많은 개념을 창시한 에츠허르 데이크스트라는 2002년 사망할 때까지 "소프트웨어 엔지니어링"이라는 개념을 거부하고, 그 용어들이 자신이 "급진적인 참신함"이라고 부른 컴퓨터 과학에 대한 부적절한 비유라고 주장했다.
"소프트웨어 공학"을 공학의 한 분야로 어떻게 정의할 것인가는 사람에 따라 다르며, 논쟁이 있어 왔다. 데이비드 파너스는 소프트웨어 공학이 실제로 공학의 한 형태라고 했다.[100][101] 스티브 맥코넬은 공학이 아니라고 했지만, 공학으로 진화해야 한다고 주장했다.[102] 도널드 크누스는 프로그래밍은 기술이자 과학이라고 했다.[103] 에드거 다익스트라는 "소프트웨어 공학"과 "소프트웨어 엔지니어"라는 용어가 특히 미국에서 오용되고 있다고 지적했다.[104]
데이비드 파너스는 "나는 소프트웨어 공학을 컴퓨터 과학의 한 분야로서가 아니라, 토목 공학, 기계 공학, 화학 공학, 전기 공학 등의 요소를 결합한 것으로 다룬다"고 말하고 있다.[105]
8. 2. 방법론 논쟁
소프트웨어 공학 지식의 확산과 분야 성숙을 위해 라이선스, 인증, 체계화된 지식 기반을 요구하는 목소리가 있다.[81] 그러나 소프트웨어 공학이라는 개념 자체가 너무 새롭기 때문에 제대로 이해되지 못하고 널리 오해되고 있다는 주장도 제기된다.[82]소프트웨어 공학의 핵심 문제는 그 접근 방식이 경험적이지 않다는 비판이다. 즉, 실제 세계에서 검증이 부족하거나 매우 제한적이기 때문에, "이론적 환경"에서만 가능한 것으로 오해된다는 것이다.[82]
오늘날 소프트웨어 개발의 많은 개념을 창시한 에츠허르 데이크스트라는 "소프트웨어 공학"이라는 용어를 거부하고, 컴퓨터 과학에 대한 부적절한 비유라고 주장했다. 그는 "소프트웨어 공학"이 "프로그래밍을 할 줄 모르는 사람을 위한 방법"을 강령으로 삼았다고 비판했다.[83]
8. 3. 자동화와 일자리 감소
초기 아웃소싱의 영향으로 북미와 유럽의 소프트웨어 개발 활동이 인도, 중국, 러시아 등 개발도상국으로 이전되었다. 이러한 방식은 거리와 시간대 차이, 대규모 일자리 이전 등의 문제점을 야기했다. 이로 인해 선진국 학생들은 해외 아웃소싱과 외국인 노동자에 의한 일자리 대체 우려로 소프트웨어 공학 교육을 기피하기도 한다.[74] 관련 통계에 따르면, 소프트웨어 공학 자체는 아니지만 컴퓨터 프로그래밍 직종은 영향을 받은 것으로 나타났다.[75]9. 미래 전망
소프트웨어 공학의 미래는 해외 아웃소싱과 외국인 노동자 비자 문제 등으로 인해 선진국 학생들의 교육 기피 현상이 나타나기도 했지만, 릴레이 개발 방식과 같은 효율적인 워크플로를 통해 조직의 운영 능력을 향상시키는 방향으로 발전하고 있다.[76] 지리적, 시간적, 문화적, 의사소통의 어려움에도 불구하고, 글로벌 소프트웨어 개발 분야의 연구는 계속 진행 중이다.[77]
참조
[1]
논문
[2]
웹사이트
Computing Degrees & Careers
http://computingcare[...]
ACM
2010-11-23
[3]
서적
What Every Engineer Should Know about Software Engineering
https://books.google[...]
CRC
2011-01-21
[4]
웹사이트
What Does a Software Engineer Do?
https://www.coursera[...]
coursera
2022-10-31
[5]
잡지
Programmers: Stop Calling Yourselves Engineers
https://www.theatlan[...]
2015-11-05
[6]
서적
Guide to the Software Engineering Body of Knowledge Version 3.0 (SWEBOK)
https://www.computer[...]
IEEE Computer Society
2014
[7]
웹사이트
The history of coding and software engineering
https://www.hackreac[...]
2021-05-06
[8]
웹사이트
Computers and Automation: The Computer Directory and Buyers' Guide, 1965
http://www.bitsavers[...]
2023-07-15
[9]
학술지
President's Letter to the ACM Membership
Association for Computing Machinery
[10]
웹사이트
The origin of "software engineering"
https://bertrandmeye[...]
2013-04-04
[11]
웹사이트
The 1968/69 NATO Software Engineering Reports
http://homepages.cs.[...]
2017-11-17
[12]
웹사이트
Margaret Hamilton: First Software Engineer
https://www.computer[...]
IEEE Computer Society
2008-10-05
[13]
서적
Software Engineering
Pearson Education Limited
2015-03-24
[14]
컨퍼런스
Software Engineering: Report of a conference sponsored by the NATO Science Committee
http://homepages.cs.[...]
Scientific Affairs Division, NATO
1968-10-07
[15]
웹사이트
The 1968/69 NATO Software Engineering Reports
http://homepages.cs.[...]
The School of the Computer Sciences, Newcastle University
2001-08-10
[16]
웹사이트
ICSE 2018 – Plenary Sessions – Fred Brooks
https://www.youtube.[...]
2018-05-31
[17]
웹사이트
ICSE 2018 – Plenary Sessions – Margaret Hamilton
https://www.youtube.[...]
2018-05-31
[18]
학술지
Software engineering institute (SEI)
https://dl.acm.org/d[...]
John Wiley and Sons Ltd.
2003-01-01
[19]
서적
Software Engineering 2014: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering
https://www.acm.org/[...]
IEEE Computer Society and Association for Computing Machinery
2015-02-23
[20]
간행물
Systems and software engineering – Vocabulary
ISO/IEC/IEEE
[21]
간행물
IEEE Standard Glossary of Software Engineering Terminology
IEEE
[22]
서적
Software Engineering
http://www.pearsoned[...]
Pearson Education
[23]
학술지
Software Engineering
[24]
웹사이트
Definition of SOFTWARE ENGINEERING
https://www.merriam-[...]
2019-11-25
[25]
서적
Software Engineering at Google
O'Reilly Media, Inc.
[26]
웹사이트
Engineering an Academic Program in Software Engineering
http://www.micsympos[...]
35th Annual Midwest Instruction and Computing Symposium
2002-04-05
[27]
서적
An Undergraduate Curriculum in Software Engineering
https://books.google[...]
Springer
[28]
학술지
Realising evidence-based software engineering
2005
[29]
서적
Fluency with information technology : skills, concepts, & capabilities
[30]
학술지
Software Engineering Programmes are not Computer Science Programmes
http://citeseer.ist.[...]
[31]
학술지
Software Engineering Programmes are not Computer Science Programmes
http://citeseer.ist.[...]
[32]
서적
Professional Software Development: Shorter Schedules, Better Projects, Superior Products, Enhanced Careers
https://archive.org/[...]
Addison-Wesley
2003-08
[33]
학술지
Computer Programming as an Art
http://disciplinas.l[...]
[34]
웹사이트
There is still a war going on (manuscript Austin, 3 December 1993)
http://www.cs.utexas[...]
The University of Texas at Austin, Department of Computer Sciences
2004-11-23
[35]
웹사이트
Software Engineering {{!}} Classification of Software Requirements
https://www.geeksfor[...]
2018-06-19
[36]
웹사이트
Software Engineering {{!}} Software Design Process
https://www.geeksfor[...]
2021-05-06
[37]
웹사이트
What is Software Maintenance? Definition of Software Maintenance, Software Maintenance Meaning
https://economictime[...]
2021-05-06
[38]
서적
Guide to the Software Engineering Body of Knowledge
http://www.computer.[...]
IEEE Computer Society
2005
[39]
논문
The first decade of an undergraduate degree program in software engineering
1999-04-01
[40]
웹사이트
ABET Accredited Engineering Programs
http://www.abet.org/[...]
2007-04-03
[41]
서적
Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers
2003-07-10
[42]
학회
Professional Engineers Ontario's approach to licensing software engineering practitioners
IEEE
2001-02-19
[43]
웹사이트
NCEES Software Engineering Exam Specifications
http://cdn1.ncees.co[...]
[44]
웹사이트
NCEES discontinuing PE Software Engineering exam
https://ncees.org/nc[...]
National Council of Examiners for Engineering and Surveying
2018-03-13
[45]
웹사이트
Software Engineering Code of Ethics
http://www.computer.[...]
[46]
웹사이트
How Many Programmers are there in the World and in the US? [2023]
https://qubit-labs.c[...]
2022-11-29
[47]
웹사이트
Global Developer Population and Demographic Study 2016 V2
http://evansdata.com[...]
Evans Data Corporation
[48]
웹사이트
Computer Software Engineers and Computer Programmers
http://www.bls.gov/o[...]
[49]
웹사이트
Software Developers
https://www.bls.gov/[...]
U. S. Bureau of labor Statistics
2019-09-04
[50]
웹사이트
Computing Disciplines and Majors
https://www.acm.org/[...]
Association for Computing Machinery
[51]
웹사이트
Software Developers: Occupational Outlook Handbook
http://www.bls.gov/o[...]
U.S. Bureau of Labor Statistics
[52]
웹사이트
Computer Software Engineer
http://www.bls.gov/k[...]
Bureau of Labor Statistics
2010-03-19
[53]
웹사이트
Software Developers
http://www.bls.gov/o[...]
Bureau of Labor Statistics
2014-01-08
[54]
웹사이트
Tech Companies Want You to Believe America Has a Skills Gap
https://www.bloomber[...]
2020-08-04
[55]
웹사이트
Computer Programmers : Occupational Outlook Handbook: : U.S. Bureau of Labor Statistics
https://www.bls.gov/[...]
[56]
웹사이트
Archive By Publication : Beyond the Numbers: U.S. Bureau of Labor Statistics
https://www.bls.gov/[...]
[57]
웹사이트
The Soon-to-Be-Extinct Embedded Software Engineer
https://www.designne[...]
2018-05-10
[58]
웹사이트
hp's Developer Portal | HP International Women's Week: Women in Computer Science dropping since 1980s
https://developers.h[...]
[59]
웹사이트
Software engineer jobs in danger due to ChatGPT-like tools? Here's what Google CEO Sundar Pichai has to say
https://www.business[...]
2023-04-06
[60]
웹사이트
ChatGPT could make these jobs obsolete
https://nypost.com/2[...]
2023-01-25
[61]
웹사이트
Software engineers are panicking about being replaced by AI
https://www.business[...]
[62]
웹사이트
Council Post: How Will ChatGPT Affect Jobs?
https://www.forbes.c[...]
[63]
웹사이트
ChatGPT spells the end of coding as we know it
https://www.business[...]
[64]
웹사이트
ChatGPT may be coming for our jobs. Here are the 10 roles that AI is most likely to replace.
https://www.business[...]
[65]
웹사이트
These are the tech jobs most threatened by ChatGPT and A.I.
https://www.cnbc.com[...]
2023-04-15
[66]
웹사이트
SEI certification page
http://www.sei.cmu.e[...]
Sei.cmu.edu
[67]
웹사이트
The Top 10 Problems with IT Certification in 2008
http://www.informit.[...]
2008-03-14
[68]
웹사이트
2006 IEEE computer society report to the IFIP General Assembly
http://www.ifip.org/[...]
[69]
웹사이트
CSDA
http://www.computer.[...]
[70]
웹사이트
Past ACM Presidents Reflect on Their Service to ACM
https://www.acm.org/[...]
Association for Computing Machinery
[71]
논문
Should software engineers be licensed?
2002-11-01
[72]
웹사이트
I.S.P. Designation
http://www.cips.ca/s[...]
2007-03-15
[73]
웹사이트
Professional Engineers Ontario: Welcome to PEO's website
http://www.peo.on.ca
Peo.on.ca
2012-03-25
[74]
웹사이트
As outsourcing gathers steam, computer science interest wanes
http://www.computerw[...]
Computerworld.com
2006-05-05
[75]
웹사이트
Software developer growth slows in North America: Study shows Asia will lead in software developer jobs by 2010
https://www.infoworl[...]
2007-03-13
[76]
웹사이트
Gartner Magic Quadrant
http://www.cognizant[...]
Cognizant.com
2012-03-25
[77]
논문
Virtual software team project management
http://eprints.dkit.[...]
2010-08-20
[78]
웹사이트
Outstanding Research Award
https://www2.sigsoft[...]
2024-04-01
[79]
웹사이트
SIGSOFT Awards 2024
https://sigsoft.medi[...]
2024-01-17
[80]
웹사이트
ICSE Most Influential Paper Award
https://www.sigsoft.[...]
ACM SIGSOFT
[81]
논문
Viewpoint: taking the lead in licensing software engineers
1999-04
[82]
논문
Software engineering is a value-based contact sport
2002-09-10
[83]
웹사이트
On the cruelty of really teaching computing science
http://www.cs.utexas[...]
2014-01-10
[84]
웹사이트
Guide to the Software Engineering Body of Knowledge
http://www.swebok.or[...]
2004-02-06
[85]
서적
Product Reliability, Maintainability, and Supportability Handbook
CRC Press
1995
[86]
웹사이트
Guide to the Software Engineering Body of Knowledge
http://www.swebok.or[...]
2004-02-06
[87]
웹사이트
Guide to the Software Engineering Body of Knowledge
http://www.swebok.or[...]
2004-02-06
[88]
웹사이트
There is still a war going on (manuscript Austin, 3 December 1993)
http://www.cs.utexas[...]
The University of Texas at Austin, Department of Computer Sciences
1993-12-03
[89]
표준
ISO/IEC 12207 (JIS X 0160):2021 - ライフサイクル(life cycle)
[90]
표준
ISO/IEC 12207 (JIS X 0160):2021 - ライフサイクルモデル(life cycle model)
[91]
표준
ISO/IEC 12207 (JIS X 0160):2021 - ライフサイクルプロセス
[92]
문서
伽藍方式とバザール方式
[93]
표준
IEEE Standard Glossary of Software Engineering Terminology
IEEE
1990
[94]
서적
Software Engineering
http://www.pearsoned[...]
Pearson Education
2007
[95]
논문
Software Engineering
North-Holland Publishing Co.
1972
[96]
웹사이트
Engineering an Academic Program in Software Engineering
http://www.micsympos[...]
35th Annual Midwest Instruction and Computing Symposium
2002-04-05
[97]
서적
An Undergraduate Curriculum in Software Engineering
Springer
1990
[98]
웹사이트
Realizing Evidence-based Software Engineering
http://evidence.cs.k[...]
2004-12-14
[99]
웹사이트
What's in a Name? Tech Sector battles Engineers on "software engineering"
http://www.peo.on.ca[...]
[100]
논문
Software Engineering Programmes are not Computer Science Programmes
http://www.cas.mcmas[...]
1998
[101]
논문
Software Engineering Programmes are not Computer Science Programmes
http://www.cas.mcmas[...]
1998
[102]
서적
Professional Software Development: Shorter Schedules, Better Projects, Superior Products, Enhanced Careers
Addison-Wesley
2003-08
[103]
논문
Computer Programming as an Art
http://www.paulgraha[...]
1974
[104]
웹사이트
There is still a war going on (manuscript Austin, 3 December 1993)
http://www.cs.utexas[...]
The University of Texas at Austin, Department of Computer Sciences
1993-12-03
[105]
논문
Software Engineering Programmes are not Computer Science Programmes
http://citeseer.ist.[...]
1998
[106]
문서
EDSAC#시스템 소프트웨어
[107]
서적
Guide to the Software Engineering Body of Knowledge - 2004 Version
http://www.swebok.or[...]
IEEE Computer Society
[108]
저널
Software engineering: Report of a conference sponsored by the NATO Science Committee
http://homepages.cs.[...]
Scientific Affairs Division, NATO
2008-12-26
[109]
웹사이트
The 1968/69 NATO Software Engineering Reports
http://homepages.cs.[...]
The School of Computer Sciences, Newcastle University
2001-08-10
[110]
저널
Go To Statement Considered Harmful
http://www.acm.org/c[...]
2007-07-03
[111]
저널
On the Criteria To Be Used in Decomposing Systems into Modules
http://www.acm.org/c[...]
2008-12-26
[112]
서적
The Cathedral and the Bazaar
[113]
서적
Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers
2003-07-10
[114]
웹사이트
IEEE COMPUTER SOCIETY FIRST TO MARKET WITH SOFTWARE CERTIFICATIONS THAT MEET NEW ISO STANDARD
http://www.computer.[...]
IEEE COMPUTER SOCIETY
2008-10-27
[115]
웹사이트
EUROPA - Redirection
http://ec.europa.eu/[...]
관련 사건 타임라인
( 최근 20개의 뉴스만 표기 됩니다. )
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com